package webbrow.board.spring.model;

import java.util.HashMap;
import java.util.List;

import webbrow.board.component.BoardSpringDao;
import webbrow.board.component.BoardSpringService;
import webbrow.board.vo.BoardSpringVO;
import webbrow.board.vo.CategoryVO;
import webbrow.board.vo.ListVO;
import webbrow.board.vo.PagingBean;
import webbrow.board.vo.SearchCommand;

public class BoardSpringServiceImpl implements BoardSpringService {
	private BoardSpringDao boardSpringDao;
	public BoardSpringServiceImpl(BoardSpringDao boardSpringDao){
		super();
		this.boardSpringDao=boardSpringDao;
	}
	/**
	 * 글 쓰기
	 */
	public void writeSpringBoard(BoardSpringVO vo) {
		boardSpringDao.insertSpringBoard(vo);
	}
	/**
	 * 글 상세보기 (조회수 증가 x)
	 */
	public BoardSpringVO showSpringBoardNoHits(int no) {
		return boardSpringDao.selectSpringBoard(no);
	}
	/**
	 * 글 상세보기 (조회수 증가 o)
	 */
	public BoardSpringVO showSpringBoardHits(int no){
		boardSpringDao.updateHits(no);
		return boardSpringDao.selectSpringBoard(no);
	}
	/**
	 * 글 삭제
	 */
	public void deletePost(int no) {
		boardSpringDao.deletePost(no);
	}
	/**
	 * 게시물 리스트
	 */
	public List<?> getAllBoard() {
		return boardSpringDao.selectAllBoard();
	}
	/**
	 * 페이지 리스트
	 */
	public ListVO getPostingList(CategoryVO cvo) {
		System.out.println("service");
		List<BoardSpringVO> list=boardSpringDao.selectPostingList(cvo);
		System.out.println("service test"+cvo);
		HashMap map = new HashMap();
		map.put("category", cvo.getCategory());
		map.put("contentType", cvo.getContentType());
		int total=boardSpringDao.selectTotalPostingCount(map);
		
		PagingBean pb=new PagingBean(total,cvo.getNo());
		System.out.println("service2");
		return new ListVO(list,pb);
	}
	public List<?> searchByKeyword(SearchCommand command) {
		return null;
	}
	/**
	 * 글 수정
	 */
	public void updateSpringBoard(BoardSpringVO vo) {
		boardSpringDao.updateSpringBoard(vo);
	}
	/**
	 * 글 수정 페이지 
	 */
	public BoardSpringVO updateView(int no) {
		return boardSpringDao.updateView(no);
	}
	
	public BoardSpringVO springResponse(BoardSpringVO vo) {
		return null;
	}
	
	/**
	 * index page에서 최근 게시물 리스트와 인기 게시물 리스트, 자유게시판 리스트를 가져오는 메소드
	 */
	@Override
	public HashMap getIndexPageInfo() {
		HashMap info = new HashMap();
		info.put("latestList", boardSpringDao.selectLatestPostingList());
		info.put("hottestList", boardSpringDao.selectHottestPostingList());
		info.put("freeList", boardSpringDao.selectFreeBoardPostingList());
		return info;
	}
	/**
	 * 댓글 달기
	 */
	public void writeComment(BoardSpringVO vo){
		boardSpringDao.updateRef(vo);
		System.out.println("답글 service : "+vo);
		vo.setRestep(vo.getRestep()+1);
		vo.setRelevel(vo.getRelevel()+1);
		boardSpringDao.insertComment(vo);
		System.out.println(vo);
	}
	
	/**
	 * 글번호로 saveFileName를 가져오는 메소드
	 */
	@Override
	public String getSaveFileNameListByNo(int no) {
		return boardSpringDao.selectSaveFileNameListByNo(no);
	}
	
	/**
	 * saveFileName을 삭제한 후 DB에 갱신 시키는 메소드
	 */
	@Override
	public void updateSaveFileName(int no, String saveFileName) {
		HashMap map = new HashMap();
		map.put("no", no);
		map.put("saveFileName", saveFileName);
		boardSpringDao.updateSaveFileName(map);
	}
	
	/**
	 * 파일 수정 없을시 업데이트 메소드
	 */
	@Override
	public void updateSpringBoardNoFileChange(BoardSpringVO vo) {
		boardSpringDao.updateSpringBoardNoFileChange(vo);
	}
	
	/**
	 * 글번호로 orgFileName를 가져오는 메소드
	 */
	@Override
	public String getOrgFileNameListByNo(int no) {
		return boardSpringDao.selectOrgFileNameListByNo(no);
	}
	
	/**
	 * orgFileName을 삭제한 후 DB에 갱신 시키는 메소드
	 */
	@Override
	public void updateOrgFileName(int no, String orgFileName) {
		HashMap map = new HashMap();
		map.put("no", no);
		map.put("orgFileName", orgFileName);
		boardSpringDao.updateOrgFileName(map);
	}
}
